package com.example.sqlSession;

import com.example.pojo.Configuration;
import com.example.pojo.MappedStatement;

import java.util.List;

/**
 * 根据 PreparedStatement 提供的executeUpdate方法
 * 在 Executor该接口中提供 update 接口用来统一执行 添加、修改、删除的方法
 * 方法的返回类型为 E 是想根据 dao 层的定义的返回类型返回具体的数据类型 Boolean 或者 Integer
 *
 * @author kangshuai
 */
public interface Executor {

    /**
     * 查询
     *
     * @param configuration
     * @param mappedStatement
     * @param params
     * @param <E>
     * @return
     * @throws Exception
     */
    <E> List<E> query(Configuration configuration, MappedStatement mappedStatement, Object... params) throws Exception;

    /**
     * 新增、修改、删除
     *
     * @param configuration
     * @param mappedStatement
     * @param params
     * @param <E>
     * @return
     * @throws Exception
     */
    <E> E update(Configuration configuration, MappedStatement mappedStatement, Object... params) throws Exception;

}
